
//   viewAll() {
//     // 跳转时携带当前选项卡参数（currentTab），让新页面默认选中同一标签
//     wx.navigateTo({
//       url: `/pages/allQa/allQa?currentTab=${this.data.currentTab}`,
//     });
//   }
// });
Page({
  data: {
    currentTab: 0, // 当前选中的选项卡（0：最新发表，1：最后回复，2：回复数量）
    qaList: [], // 问答列表数据
    pageNum: 1, // 当前页码（分页用）
    pageSize: 10, // 每页条数
    loading: false, // 初始加载状态
    loadingMore: false, // 加载更多状态
    noMore: false, // 是否没有更多数据
    error: null // 错误信息
  },

  onLoad(options) {
    // 接收从原页面传递的初始选项卡参数（如果有）
    if (options.currentTab) {
      this.setData({
        currentTab: Number(options.currentTab)
      });
    }
    // 初始加载第一页数据
    this.getQaList();
  },

  // 选项卡切换
  switchTab(e) {
    const tab = Number(e.currentTarget.dataset.tab);
    if (this.data.currentTab === tab) return; // 避免重复点击
    
    // 切换选项卡时，重置分页状态并重新加载第一页数据
    this.setData({
      currentTab: tab,
      pageNum: 1,
      qaList: [],
      noMore: false
    }, () => {
      this.getQaList();
    });
  },

  // 请求问答列表数据（支持分页）
  getQaList() {
    // 如果正在加载，直接返回
    if (this.data.loading || this.data.loadingMore) return;

    // 初始加载时显示loading，加载更多时显示loadingMore
    const isFirstPage = this.data.pageNum === 1;
    this.setData({
      loading: isFirstPage,
      loadingMore: !isFirstPage,
      error: null
    });

    wx.request({
      url: 'http://localhost:8080/problem/page',
      method: 'GET',
      data: {
        pageNum: this.data.pageNum,
        pageSize: this.data.pageSize,
        sortType: this.data.currentTab // 按当前选项卡排序
      },
      success: (res) => {
        if (res.data.code === 200) {
          const newList = res.data.data.list || [];
          const total = res.data.data.total || 0; // 总数据量
          console.log('获取数据'+ res.data.data)
          // 处理数据：第一页直接替换，后续页追加
          const updatedList = isFirstPage ? newList : [...this.data.qaList, ...newList];
          
          this.setData({
            qaList: updatedList,
            // 判断是否还有更多数据（当前已加载条数 >= 总条数）
            noMore: updatedList.length >= total
          });
        } else {
          this.setData({
            error: res.data.message || '获取数据失败'
          });
          wx.showToast({
            title: res.data.message || '获取数据失败',
            icon: 'none'
          });
        }
      },
      fail: (err) => {
        this.setData({
          error: err.errMsg || '网络请求失败'
        });
        wx.showToast({
          title: '网络请求失败',
          icon: 'none'
        });
      },
      complete: () => {
        // 结束加载状态
        this.setData({
          loading: false,
          loadingMore: false
        });
      }
    });
  },

  // 下拉加载更多（小程序自带的页面触底事件）
  onReachBottom() {
    // 如果没有更多数据，或正在加载，不触发加载更多
    if (this.data.noMore || this.data.loading || this.data.loadingMore) return;
    
    // 页码+1，加载下一页
    this.setData({
      pageNum: this.data.pageNum + 1
    }, () => {
      this.getQaList();
    });
  },

  // 时间格式化（与原页面保持一致）
  formatTimeAgo(time) {
    if (!time) return '';
    
    // 转换为时间戳（毫秒）
    const timestamp = new Date(time).getTime();
    const now = new Date().getTime();
   
    const diff = now - timestamp; // 时间差（毫秒）
    
    // 计算各时间单位
    const second = 1000;
    const minute = second * 60;
    const hour = minute * 60;
    const day = hour * 24;
    const month = day * 30;
    const year = month * 12;
    
    // 根据时间差返回不同格式
    if (diff < minute) {
      return '刚刚';
    } else if (diff < hour) {
      return `${Math.floor(diff / minute)}分钟前`;
    } else if (diff < day) {
      return `${Math.floor(diff / hour)}小时前`;
    } else if (diff < month) {
      return `${Math.floor(diff / day)}天前`;
    } else {
      // 超过一个月则显示年月日
      const date = new Date(time);
      return `${date.getFullYear()}-${(date.getMonth() + 1).toString().padStart(2, '0')}-${date.getDate().toString().padStart(2, '0')}`;
    }
  },
 
  })
